<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Calendar
 * @subpackage Event_Source_Array
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id$
 */

/**
 * Zend_Calendar_Event_Source_Array
 *
 * @category   Zend
 * @package    Zend_Calendar
 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Calendar_Event_Source_Array extends Zend_Calendar_Event_Source_Abstract implements 
	Zend_Calendar_Event_Source_Interface
{
	public function populateEvents()
	{
		if (null === $this->getData() || 0 == count($this->getData())) {
			throw new Zend_Exception('Data empty for Zend_Calendar_Event_Array.');
		}
		
		$events = array();
		foreach ($this->getData() as $data) {
			$day = $this->getDay();
			$month = $this->getMonth();
			$year = $this->getYear();
			
			if (isset($data['_eventDate']) && is_array($data['_eventDate'])) {
				$eventDate = $data['_eventDate'];
				unset($data['_eventDate']);
				
				if (isset($eventDate['day'])) {
					$day = $eventDate['day'];
				}
				
				if (isset($eventDate['month'])) {
					$month = $eventDate['month'];
				}
				
				if (isset($eventDate['year'])) {
					$month = $eventDate['year'];
				}
			} else {
				$eventDate = null;
			}
			
			$events[] = new Zend_Calendar_Event($data, $this->getParams(), 
				array('day' => $day, 'month' => $month, 'year' => $year));
		}
		
		$this->_events = $events;
	}
}